home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 151-175 / scopedisk168 / asmmacros / am_02 / lock.i < prev    next >
Text File  |  1995-03-19  |  2KB  |  62 lines

  1.      NOLIST
  2. Lock        MACRO              ; 19 Dec 88
  3. *------------------------------; Start of Lock macro.
  4.      NOLIST
  5.      IFC '\4','read'
  6.      LIST
  7.      MOVEQ #-2,D2              ; Make D2 indicate the read accessMode.
  8.      NOLIST
  9.      ENDC
  10.      IFC '\4','write'
  11.      LIST
  12.      MOVEQ #-1,D2              ; Make D2 indicate the write accessMode.
  13.      NOLIST
  14.      ENDC
  15.      IFC '\1','I'              ; If <PointerToFileName> is specified, then
  16.      LIST
  17.                                ; Put <PointerToFileName> in D1.
  18.      MOVE.L #\2,D1
  19.      NOLIST
  20.      IFEQ ReEntrant-1
  21.      LIST
  22.      ADD.L A5,D1
  23.      NOLIST
  24.      ENDC
  25.      ENDC
  26.      IFC '\1','D'              ; If <FileName> is specified, then
  27.      LIST
  28.                                ; Make D1 point to <FileName>.str .
  29.      MOVE.L #\2.str,D1
  30.      NOLIST
  31.      IFND \2.str               ; Unless it was previously defined,
  32.      LIST
  33.      SECTION DataSection,DATA  ; The ASCII <FileName> string goes here.
  34. \2.str:
  35.      DC.B '\2',0
  36.      CNOP 0,2
  37.      SECTION CodeSection,CODE
  38.      NOLIST
  39.      ENDC
  40.      ENDC
  41.      LIST
  42.      CallLib Lock,dos          ; Call Lock to get a lock on <FileName>.
  43.                                ; Put the lock at <LockName>.
  44.      NOLIST
  45.      IFEQ ReEntrant-1
  46.      LIST
  47.      DefDS \3,1
  48.      MOVE.L D0,\3(A5)
  49.      NOLIST
  50.      ENDC
  51.      IFNE ReEntrant-1
  52.      LIST
  53.      DS_BSS \3,1,.L
  54.      MOVE.L D0,\3
  55.      NOLIST
  56.      ENDC
  57.      LIST
  58.      TST.L D0                  ; Make the zero flag indicate failure.
  59. *------------------------------; End of Lock macro.
  60.      ENDM
  61.      LIST
  62.